package logic.schedulers;

import java.util.Collection;
import logic.gridSimInterface.resource.ResourceCharacteristicExt;
import logic.gridSimInterface.user.GridletInfo;
import logic.schedulers.ParametersDialog;

/**
 * Rozhranie pre algoritmy optimalizujuce rozvrhy vyuzitia zdrojov v gride.
 */
public interface AbstractSchedulerOptimization extends AlgorithmPlugin{
    /**
     * Vykonanie optimalizacie rozvrhu pre danu mnozinu zdrojov.
     * @param   costFunction    nakladova funkcia podla SimTags - COST_BY_FINIS_TIME, COST_BY_LATENCY
     */
    public void optimizeDynamic(int costFunction,
            Collection<ResourceCharacteristicExt> resourceInfoList);
    
    /**
     * Pridelenie uloh danej mnozine zdrojov. Vola sa pri statickom planovani,
     * takze su zname vsetky ulohy a casy ich vzniku. Pre kazdy zdroj sa naplanuje
     * jeho vlastna fronta uloh. V brokerovi sa z tychto front budu postupne
     * vyberat ulohy a zacnu sa vykonavat najskor v case ich vzniku.
     */
    public void optimizeStatic(int costFunction,
            Collection<ResourceCharacteristicExt> resourceInfoList,
            Collection<GridletInfo> gridlets);
}
